var Logger = require('log4js').getLogger();
var mysql = require('mysql');
var mysqlConfig = require('../Config').mysql;

//定义数据库对象池
var pool = mysql.createPool(mysqlConfig);

//数据库同步查询
var SqlQuery = async function (sql, val, errCallback) {
    return new Promise((resolve, reject) => {
        if (arguments.length == 1) {
            //获取网络连接
            pool.getConnection(function (err, conn) {
                if (err) {
                    Logger.error(err);
                    conn && conn.release();
                    reject(err);
                }
                else {
                    conn.query(sql, function (err, results, fields) {
                        conn.release();
                        if (err) {
                            Logger.error(err);
                            reject(err);
                        }
                        else {
                            resolve(results);
                        }
                    });
                }
            });
        }
        else if (arguments.length == 2) {
            callback = val;
            //获取网络连接
            pool.getConnection(function (err, conn) {
                if (err) {
                    Logger.error(err);
                    conn && conn.release();
                    errCallback && errCallback(err);
                    reject(err);
                }
                else {
                    conn.query(sql, function (err, results, fields) {
                        conn.release();
                        if (err) {
                            Logger.error(err);
                            errCallback && errCallback(err);
                            reject(err);
                        }
                        else {
                            resolve(results);
                        }
                    });
                }
            });
        }
        else if (arguments.length == 3) {
            //获取网络连接
            pool.getConnection(function (err, conn) {
                if (err) {
                    Logger.error(err);
                    conn && conn.release();
                    errCallback && errCallback(err);
                    reject(err);
                }
                else {
                    conn.query(sql, val, function (err, results, fields) {
                        conn.release();
                        if (err) {
                            Logger.error(err);
                            errCallback && errCallback(err);
                            reject(err);
                        }
                        else {
                            resolve(results);
                        }
                    });
                }
            });
        }
    });
}

//导出接口
module.exports = SqlQuery
